<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box"></div>

    <script>
        //  面向对象的核心点：编写 "类"
        //  属性：红绿灯当前的颜色，DOM 元素
  
        //  方法：切换红绿灯颜色，点击事件，创建 DOM 元素

        //  红绿灯本质是什么？ 对象！




        function Light(node) {
            this.lightId = 1
            this.parentNode = node

            //  初始化，让图片在页面上渲染
            this.init()

            //  绑定点击事件
            this.bindEvent()
        }

        //  每个实例都要初始化，说明这个函数每个实例都需要去使用
        //  这就需要将这个函数作为公共函数，保存在 Light.prototype 上
        Light.prototype.init = function () {
            let img = new Image()
            img.src = `./img/${this.lightId}.jpg`
            this.parentNode.appendChild(img)
            this.img = img
        }

        Light.prototype.changeColor = function () {
            this.lightId === 3 && (this.lightId = 0)
            this.lightId++
            this.img.src = `./img/${this.lightId}.jpg`
        }

        Light.prototype.bindEvent = function () {
            this.img.addEventListener("click", () => {
                this.changeColor()
            })
        }

        var light1 = new Light(document.body)
        var light2 = new Light(document.body)
    </script>
</body>

</html>